class Solution {
    public:
        int trap(vector<int>& height) {
            int size=height.size();
            vector<int>pre_max(size,0);
            vector<int>back_max(size,0);
            for(int i=1;i<size;i++){ 
                pre_max[i]=max(pre_max[i-1],height[i-1]);//这个位置之前最大的高度
            }
            for(int i=size-2;i>=1;i--){
                back_max[i]=max(back_max[i+1],height[i+1]);//这个位置之后的最大高度
            }
            int ret=0;
            for(int i=1;i<size-1;i++){
                if(pre_max[i]>height[i]&&back_max[i]>height[i]){
                    ret+=min(pre_max[i],back_max[i])-height[i];
                }
            }
            return ret; 
        }
    };